Aula 25 - A gramática dos gráficos

Módulo 3: Apresentando suas análises

Carolina Musso

PROFESP, DEMSP, MS

Esta semana

Aula 25 - A gramática dos gráficos

Reintrodução ao ggplot e tipos de gráficos

Aula 26 - Pivoteamento de dados

pivot_wider(), pivot_longer(), qual é melhor para o ggplot

Aula 27 - Formatações para ggplot

Paleta de cores, temas, e outras firulas

Leituras para aprofundamento

Importância

1) Muito importante já na parte de exploração dos dados

  • Ajudam ao cérebro a dar sentido em todas aquelas informações

  • Ajuda a levantar hipóteses

  • Deve ser rápido de fazer

2) Importante na apresentação final dos resultados

  • Deve ser bonito, comunicar bem e muitas vezes impressionar!

  • Requer um tempo maior de customização.

Recapitulando

  • Usaremos o pacote ggplot2
  • Gráficos feitos em camadas (adicionadas com um +), contemplando:
    • dados, geometrias e outros atributos visuais.
  • Cuidado com o conceito aesthetics, aes(): onde vou mapear os dados!
ggplot(data = mpg) + 
  geom_point(mapping = aes(x = displ, y = hwy))

ggplot(mpg) + 
  geom_point(aes(x = displ, y = hwy))

ggplot(mpg, aes(x = displ, y = hwy)) + 
  geom_point( )

ggplot(mpg) + 
  aes(x = displ, y = hwy) +
  geom_point()

mpg %>% # atenção que aqui ainda é o pipe!
ggplot() + 
  aes(x = displ, y = hwy) +
  geom_point()

Atributos estáticos Vs. mapeados

ggplot(mpg) + 
  geom_point(aes(x = displ, y = hwy), color=class)

  • O que aconteceu aqui?
ggplot(mpg, aes(x = displ, y = hwy, color=class)) + 
  geom_point( )

ggplot(mpg) + 
  aes(x = displ, y = hwy) +
  geom_point(aes(color=class))

ggplot(mpg) + 
  aes(x = displ, y = hwy) +
  geom_point(color="blue")

Tipos de gráficos

  • Camada geom_
  • Nem todos os geom_() tem os mesmos parâmetros!
  • Deve-se conhecer as variáveis (são numéricas ou categóricas?)

Alguns tipos de gráfico

  • Histogramas - geom_histogram()

  • Gráficos de barras ou colunas - geom_bar() ou geom_col()

  • Box-plots (diagrama de caixas) - geom_boxplot()

  • Pontos (dispersão / scatterplots) - geom_point()

  • Linhas - geom_line() , geom_path()

  • Linhas de tendência, Trendlines - geom_smooth()

Antes de ir para os gráficos

  • Primeiro, vamos fazer algumas manipulações
if (!require(pacman)) install.packages("pacman") 

pacman::p_load( tidyverse,rio) 

linelist <- import("Exercicios/linelist_cleaned.rds") %>% 
  filter_all(all_vars(!is.na(.)))%>% # função nova!
  filter(wt_kg>0,
         age_years>=0) 

Histrograma

  • Precisa de uma variável só: Entender a sua distribuição
ggplot(data = linelist, mapping = aes(x = age))+
  geom_histogram()

Duas variáveis quantitativas

  • Pontos, dispersão, scatterplot
ggplot(linelist, aes(x = age, y = wt_kg))+
  geom_point()

Uma quantitativa e uma categórica

ggplot(data = linelist, mapping = aes(age_cat, y=wt_kg))+
  geom_boxplot()

linelist_resumo %>% 
  ggplot(aes(x=age_cat, y=media))+
  geom_col()

aes()

parâmetros que respondem as valores do meu banco

  • x e y ….

mas além deles …

  • fill, color ..
  • shape (forma), size (tamanho) , alpha (transparência)
  • binwidth: largura das colunas do histograma
  • width: largura da coluna do gráfico de barras
  • linetype: tipo de linha (ex: solida, pontilhada)

podem ser usado em aes() mas também podem ser fixados caso deseje algum específico

Alguns exemplos de parâmetros

  • Histograma
ggplot(data = linelist, mapping = aes(x = age, fill=gender))+
  geom_histogram( binwidth=1)

ggplot(data = linelist, mapping = aes(x = age))+
  geom_histogram( binwidth=10, aes(fill=gender))

ggplot(data = linelist, mapping = aes(x = age, fill=gender))+
  geom_histogram( binwidth=1, boundary=0)

Colunas e Boxplot

  • Uma variável categórica e uma quantitativa

Muitas informações!

ggplot(data = linelist, mapping = aes(age_cat, y=wt_kg))+
  geom_boxplot()

Devo ter um único valor por grupo!

linelist %>% 
  group_by(age_cat, gender) %>% 
  summarize(media=mean(wt_kg)) %>% 
  ggplot(aes(x=age_cat, y=media, fill=gender))+
  geom_col(color="black")

. . .

  • Obs: geom_bar() aceita apenas o x, e faz automaticamente uma contagem (frequência absoluta). Use o stat=“identity” para ser equivalente ao geom_col()
  • parâmetro “position”

. . .

linelist %>% 
  group_by(age_cat, gender) %>% 
  summarize(media=mean(wt_kg)) %>% 
  ggplot(aes(x=age_cat, y=media, fill=gender))+
  geom_col(color="black",
           position="dodge")

Gráfico de Dispersão “Pontos”

linelist %>% 
ggplot( aes(age, wt_kg))+
  geom_point( color="blue")

linelist %>% 
ggplot(aes(age,ht_cm, color=wt_kg))+
  geom_point( alpha=0.5, size=2)

linelist %>% 
ggplot(aes(age, ht_cm, color=wt_kg, shape=gender))+
  geom_point( alpha=0.5, size=2)

Uma linha de tendência

  • Um pouco mais de estatística

Regressão linear.

ggplot(linelist,aes(x = age, y = wt_kg)) + 
  geom_point() +  
  geom_smooth(method="lm")                   

“locally estimated scatterplot smoothing”

ggplot(linelist,aes(x = age, y = wt_kg)) + 
  geom_point() +  
  geom_smooth()                   

Ufa! Até a próxima aula!